package datosServer;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Aiskel
 */
import java.util.*;

public class ListaUsuario
{
    private List <Usuario> miSet;
    private Comparator Nickname;
    private static ListaUsuario instance = null;

    private ListaUsuario()
    {
        miSet = new ArrayList<Usuario>();
        Nickname = new CompararNickname();
    }

    public static ListaUsuario getInstance()
    {
        if (instance == null)
            instance = new ListaUsuario();

        return instance;
    }

     public Iterator getIterator()
     {
        return miSet.iterator();
     }

    public Comparator getNickname() {
        return Nickname;
    }

    public void setNickname(Comparator Nickname) {
        this.Nickname = Nickname;
    }



    public boolean agregarElemento(Usuario objeto)//true si se agrego el elemento
    {
        if (RecorrerLista(objeto.getNickname()))
            return false;
        else
            return miSet.add(objeto);
    }


    public boolean RecorrerLista(String nick)//retorno=true si lo encontro
    {
        boolean retorno = false;
        // if (nick instanceof Usuario)
        // {
            for (Usuario user : miSet)
            {
                if (nick.compareTo("")==0 ? retorno=false : nick.equals(user.getNickname()))
                    return retorno=true;
            }
        //}
        return retorno;
    }

    public Usuario RecorrerListaUsuario(String nick)//retorno=true si lo encontro
    {
        //boolean retorno = false;
       // if (nick instanceof Usuario)
        // {
            for (Usuario user : miSet)
            {
                if (nick.compareTo("")==0 ? null : nick.equals(user.getNickname()))
                    return user;
            }
        //}
        return null;
    }

    public void imprimirColeccion()
    {
        int i;
        Usuario registro;
        /*
         * Se define un arreglo de tipo Object (la clase genÃ©rica Java)
         */
        Object [] arreglo;
        /*
         * Se convierte la colecciÃ³n pasada como parÃ¡metro a un array, que
         * es asignado al arreglo de tipo Object
         */
        if (miSet != null)
        {
                arreglo = miSet.toArray();
                System.out.println("DATOS");
                /*
                 * Se hace un recorrido del arreglo de tipo Object y se imprime
                 * la informaciÃ³n de la casilla i
                 */
                for(i=0 ; i<arreglo.length ; i++)
                {
                    registro = (Usuario) arreglo[i];
                    System.out.println("Nombre: " + registro.getNombre());
                    System.out.println("Apellido: " + registro.getApellido());
                    System.out.println("Nickname: " + registro.getNickname());
                    //System.out.println("Fecha de Nacimiento: " + registro.getFechaNac());
                    System.out.println("Fecha de Nacimiento: " + registro.getDia() + "/" + registro.getMes() + "/" + registro.getAño());
                    System.out.println();
                }
                System.out.println("\n");
        }
        else
        {
            System.out.println("EL Usuario no tiene partidas creadas");
        }
    }

}
